From e39b8611bd20e602102a7e1b8e06e34c1b85cfe5 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 30 Oct 2015 02:06:01 +0100 Subject: [PATCH] widget: Queue redraw on gtk_widget_queue_allocate() Mirror the behavior of gtk_widget_queue_resize() and always queue a redraw. If we ever want to cause allocates without redraws we can add gtk_widget_queue_allocate_no_redraw() then. I had initially assumed gtk_widget_size_allocate() would take care of queueing redraws, but it does not do that when neither size nor position change. And that is obviously what's happening after gtk_widget_queue_allocate(). Fixes buttons sometimes not redrawing (the record button in widget-factory after locking it, all buttons when switching to the dark theme). --- gtk/gtkwidget.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 2c03f72e01..fd53f5876c 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -5602,6 +5602,9 @@ gtk_widget_queue_allocate (GtkWidget *widget) { g_return_if_fail (GTK_IS_WIDGET (widget)); + if (_gtk_widget_get_realized (widget)) + gtk_widget_queue_draw (widget); + gtk_widget_set_alloc_needed (widget); } -- 2.30.2